The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for runtime based enforcement of energy related policies between a host or virtual machine and an application runtime in a cloud computing environment.
Cloud computing is the use of computing resources (hardware and software) that are delivered as a service over a network (typically the Internet). Cloud computing entrusts remote services with a user's data, software and computation. Using software as a service, users also rent application software and databases. The cloud providers manage the infrastructure and platforms on which the applications run. End users may access cloud-based applications through a web browser or a light-weight desktop or mobile app while the business software and user data are stored on servers at a remote location.
In the software-as-a-service (SaaS) model, cloud providers install and operate application software in the cloud, and cloud users access the software from cloud clients. The cloud users do not manage the cloud infrastructure and platform on which the application is running. This eliminates the need to install and run the application on the cloud user's own computers, simplifying maintenance and support. What makes a cloud application different from other applications is its elasticity. This can be achieved by cloning tasks onto multiple virtual machines at run-time to meet the changing work demand. Load balancers distribute the work over a set of virtual machines. This process is inconspicuous to the cloud user who sees only a single access point.
An application runtime system or runtime environment is a software component designed to support the execution of computer applications written in some computer language. The application runtime contains implementations of basic low-level commands and may also implement higher-level commands and may support type checking, debugging, and even code generation and optimization.
An application runtime relieves programmers from the burden of writing code for mundane tasks, such as drawing text on the screen or making an Internet connection. It also provides an abstraction layer that hides the complexity or variations in the services offered by the operating system.